define(function(require, exports){
	var pubjs	= require('pubjs');
	var view	= require('@base/view');
	var util	= require('util');

	var Batch = view.container.extend({
		init:function(config){
			config = pubjs.conf(config, {
				'tplFile':	'admin/tpl/category/batchImport.tpl',
				'sourceUrl': 'category/source',
				'typeUrl': 'category/type',
				'urlRemove': 'category/batchRemove',
				'view_model': {
					'headTitle': '批量删除分类数据'
				}
			});

			this.$id = null;
			this.Super('init', arguments);
		}
		,afterBuild:function(){
			var self = this;

			var config = {
				// 表单取消按钮
				'cancel': {
					'value': LANG('取消'),
					'class': 'btn btn-link mr20'
				}
				// 表单保存按钮
				,'save': {
					'value': LANG('删除'),
					'class': 'btn btn-confirm'
				}
				,type: {
					url: self.getConfig('typeUrl')
					,hasSearch: true
					,hasOperator: true
					,reqType: 'websocket'
				}
				,channel: {
					url: self.getConfig('sourceUrl')
					,hasSearch: true
					,hasOperator: true
					,reqType: 'websocket'
				}
			};

			self.buildFromTemplate(config);
		}
		,validate: function(data){
			var self = this;

			if(!data.Type || !data.Type.length){
				pubjs.alert(LANG('请选择相应的分类.'));
				return false;
			}
			if(!data.ChannelIds || !data.ChannelIds.length){
				pubjs.alert(LANG('请选择相应的分类.'));
				return false;
			}
			return true;
		}
		,getData: function(){
			var self = this
				,data;

			var ch = self.$;
			data = {
				Type: ch.type.getValue()
				,ChannelIds: ch.channel.getValue()
			};

			return data;
		}
		,reset: function(){
			this.$.type.reset();
			this.$.channel.reset();
			return this;
		}
		,save: function() {
			var self = this;
			var data = self.getData();
			if(self.validate(data)) {
				pubjs.confirm(LANG('真的删除以这些渠道的分类吗?一旦删除不可恢复.'),function(res) {
					if(res) {
						pubjs.loading.show();
						pubjs.mc.send(self.getConfig('urlRemove'), data, self.afterSave.bind(self))
					}
				});
			}

			return false;
		}
		,afterSave: function(err, data) {
			pubjs.loading.hide();
			if(err) {
				pubjs.alert(err.message);
				return false;
			}

			this.reset();
			pubjs.alert(data && data.message);
			return false;
		}
		,onInputClick: function(ev) {
			if(ev.name == 'save') {
				this.save();
			}
			else if(ev.name == 'cancel') {
				pubjs.controller.navigate('category');
			}
		}
	});

	exports.batch = Batch;

});